[따배도] - 컨테이너와 도커의 이해


  • 컨테이너 개념과 도커를 사용하는 이유에 대해 알아봅시다.

컨테이너를 배워야 하는 이유

시대적 변화 단계

  • Bare Metal(일반 하드웨어) - Virtualization(가상화) - 컨테이너 기반 가상화 플랫폼 사용(도커 등)

    • 즉, 소프트웨어 확장성과 배포가 용이하게 운영하기 위해서 사용

image-2-1024x520

리눅스에서만 돌려야 하는 이유

  • 컨테이너 엔진은 리눅스 커널 기능을 기반으로 만들어졌다. 즉, 리눅스 커널 기능을 사용해야 함

    • 도커가 아래의 리눅스 커널에 있는 기능을 사용
    • chroot : 독립된 공간 형성
    • namespace : isolate(격리) 기능 지원
    • cgroup : 필요한만큼 HW 지원
  • 윈도우나 맥 OS들은 리눅스 커널이 없으므로, 그 위에 VM(가상환경 - 리눅스)를 올려서 사용한다.

    • 이때 필요한 기능은 Hypervisor 기능이 활성화 되어 있어야 한다.

Hypervisor : 하나의 OS 위에 여러 개의 OS들이 올라가 동시에 실행할 수 있도록 하는 논리적 플랫폼을 뜻한다.

일반 프로그램 VS 컨테이너

  • 일반 프로그램은 애플리케이션을 돌릴 때 필요한 구성 하나하나를 일일이 구성해야 한다.
  • 그러나 컨테이너는 애플리케이션을 돌릴 때 필요한 구성을 이미지화 해 한번 저장시켜두면 다른 개발환경에서 쉽게 구축이 가능하다

그래서 컨테이너를 쓰는 이유

  • 환경 구성 다른 환경에서 구축하기 쉽다.
  • 확장성이 용이하다. (스케일 인/아웃)

    • MSA, DevOps에 적합하다.
    • ex) 많은 트래픽이 발생해 애플리케이션을 확장시켜야 할 때, 기존에는 VM 위에 애플리케이션을 하나 더 올리는 방식을 택했다. 하지만 이는 OS의 자원이 같이 올라가기 때문에 불필요한 자원을 소모해야 했었다. 이에 반해 컨테이너 방식은 OS를 포함하지 않고, 애플리케이션만 겪리된 환경을 구성해 분산화에 용이하다.
  • 자동화에 용이하다.

Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github